home *** CD-ROM | disk | FTP | other *** search
- * MCLOCK
- *
- * copyright by Roger Fischlin
- * Dieses Programm ist Public-Domain-Soft!
- * Assembler : Devpac Assembler
-
-
-
- incdir "vd0:include/"
- include intuition/intuition.i
- include intuition/intuition_lib.i
- include exec/memory.i
- include exec/exec_lib.i
- include graphics/graphics_lib.i
- include libraries/dos_lib.i
- include libraries/dos.i
- include graphics/text.i
-
- PRINT macro ; Macro zur Ausgabe eines Textes
- move #\1,d0
- move #\2,d1
- move.l Window,a1
- move.l wd_RPort(a1),a1
- CALLGRAF Move
- move #\3,d0
- move.l Window,a1
- move.l wd_RPort(a1),a1
- CALLGRAF SetAPen
- lea \4,a0
- move.l #\5,d0
- move.l Window,a1
- move.l wd_RPort(a1),a1
- CALLGRAF Text
- endm
-
- _main lea dosname,a1 ; Öffnen der DOS-Library
- moveq #0,d0
- CALLEXEC OpenLibrary
- tst.l d0
- beq abbruch
- move.l d0,_DOSBase
- lea intname,a1 ; Öffnen der INTUITION-Library
- moveq #0,d0
- CALLEXEC OpenLibrary
- tst.l d0
- beq closedos
- move.l d0,_IntuitionBase
- lea grafname,a1 ; Öffnen der GRAPHICS-Library
- moveq #0,d0
- CALLEXEC OpenLibrary
- tst.l d0
- beq closeint
- move.l d0,_GfxBase
- lea windowdef,a0 ; Window öffnen
- CALLINT OpenWindow
- tst.l d0
- beq closegraf
- move.l d0,Window
- lea.l FONT,a0 ; Topaz-80 (ROM-Zeichensatz)
- CALLGRAF OpenFont ; öffnen und benutzen
- move.l d0,Font
- tst.l d0
- beq closewindow
- move.l d0,a0
- move.l Window,a1
- move.l wd_RPort(a1),a1
- CALLGRAF SetFont
-
- Schleife PRINT 5,18,3,Text1,4 ; Texte (RAM,Chip, etc.) ausgeben
- PRINT 5,28,3,Text2,4
- PRINT 5,39,3,Text3,4
- PRINT 5,49,3,Text4,4
- moveq #MEMF_PUBLIC,d1 ; Freies RAM feststellen
- CALLEXEC AvailMem
- move.l d0,d2
- lea buffer,a0
- bsr makeASCII ;Zahl in ASCII-Code umwandeln
- PRINT 45,18,1,buffer,8
- moveq #MEMF_CHIP,d1 ; dasselbe wie oben, nur mit Chip-RAM
- CALLEXEC AvailMem
- move.l d0,d2
- lea buffer,a0
- bsr makeASCII
- PRINT 45,28,1,buffer,8
- move.l #Zeit,d1 ; Zeit holen
- CALLDOS DateStamp
- move.l Zeit+8,d0 ; 1/50 sec in dieser Minute in Sekunden
- divu #50,d0 ; umwandeln
- and.l #$ff,d0
- lea.l Time+6,a0
- bsr Convert ; in ASCII umwandeln
- move.l Zeit+4,d0
- divu #60,d0 ; Minuten in Stunden umwandeln
- and.l #$ff,d0
- lea.l Time,a0
- bsr Convert ;und in ASCII umwandeln
- move.l Zeit+4,d0 ; Minuten in dieser Stunde holen
- divu #60,d0
- lsr.l #8,d0 ; Teilerrest nehmen
- lsr.l #8,d0
- and.l #$ff,d0
- lea.l Time+3,a0 ; und in ASCII
- bsr Convert
- move.l Zeit,d0 ;vergangene Tage set 1.1.78
- lea.l Jahre,a0
- move.l #77,d1 ; Jahreszahl feststellen
- label1 addq #1,d1
- sub.w (a0)+,d0
- bpl label1
- add.w -(a0),d0
- move.l d0,d5
- move.l (a0),d6
- and.l #$ff,d1
- cmp.w #99,d1 ; nur die letzten zwei Ziffern
- bls label2
- sub.w #100,d1
- label2 move.l d1,d0
- and.l #$ff,d0
- lea.l Date+6,a0
- bsr Convert ; in ASCII
- btst #0,d6
- beq label3
- lea.l KeinSJahr,a0 ; Schaltjahr (gerade Zahl der Tage) ?
- bra label4
- label3 lea.l Schaltjahr,a0
- label4 move.l #-1,d1 ; Monat feststellen
- label5 addq #1,d1
- sub.w (a0)+,d5
- bpl label5
- add.w -(a0),d5
- move.l d1,d0
- and.l #$ff,d0
- lea.l Date+3,a0
- bsr Convert ; in ASCII
- move.l d5,d0
- and.l #$ff,d0
- lea.l Date+0,a0
- bsr Convert ; Tag des Monats in ASCII
- PRINT 45,39,1,Time,8 ; Texte ausgeben
- PRINT 45,49,1,Date,8
- move #0,d0 ; Linie ziehen
- move #31,d1
- move.l Window,a1
- move.l wd_RPort(a1),a1
- CALLGRAF Move
- move #1,d0
- move.l Window,a1
- move.l wd_RPort(a1),a1
- CALLGRAF SetAPen
- move #135,d0
- move #31,d1
- move.l Window,a1
- move.l wd_RPort(a1),a1
- CALLGRAF Draw
-
- move.l Window,a0 ; CloseWindow ?
- move.l wd_UserPort(a0),a0
- CALLEXEC GetMsg
- tst.l d0
- bne ende
-
- move.l #40,d1 ; anderen Task Zeit lassen
- CALLDOS Delay
- bra Schleife
-
- ende move.l d0,a1
- CALLEXEC ReplyMsg
- move.l Font,a1 ; alles schließen
- CALLGRAF CloseFont
- closewindow move.l Window,a0
- CALLINT CloseWindow
- closegraf move.l _GfxBase,a1
- CALLEXEC CloseLibrary
- closeint move.l _IntuitionBase,a1
- CALLEXEC CloseLibrary
- closedos move.l _DOSBase,a1
- CALLEXEC CloseLibrary
- abbruch moveq #0,d0
- rts
-
- makeASCII moveq #7,d0 ; Zahl (d2) in ASCII umwandeln
- lea.l buffer,a0
- lea.l Potenzen,a1
- next move #"0",d1
- labela addq #1,d1
- sub.l (a1),d2
- bcc labela
- subq #1,d1
- add.l (a1),d2
- move.b d1,(a0)+
- tst.l (a1)+
- dbra d0,next
- moveq #6,d0
- lea buffer,a0
- clear cmp.b #'0',(a0)
- bne fini
- move.b #' ',(a0)+
- dbra d0,clear
- fini rts
-
- Potenzen dc.l 10000000
- dc.l 1000000
- dc.l 100000
- dc.l 10000
- dc.l 1000
- dc.l 100
- dc.l 10
- dc.l 1
- dc.l 0
-
- W_Gadgets equ WINDOWDRAG!WINDOWDEPTH!WINDOWCLOSE!WINDOWSIZING
- W_Extras equ SMART_REFRESH!ACTIVATE
- Text1 dc.b "RAM "
- even
- Text2 dc.b "Chip"
- even
- Text3 dc.b "Time"
- even
- Text4 dc.b "Date"
- even
- Time dc.b "xx:xx:xx"
- even
- Date dc.b "xx.xx.xx"
- even
-
- windowdef dc.w 500,140
- dc.w 135,53
- dc.b -1,-1
- dc.l CLOSEWINDOW
- dc.l W_Gadgets!W_Extras
- dc.l 0
- dc.l 0
- dc.l 0
- dc.l 0
- dc.l 0
- dc.w 135,21
- dc.w 135,53
- dc.w WBENCHSCREEN
-
- intname INTNAME
- grafname GRAFNAME
- dosname DOSNAME
- buffer ds.b 10
- Zeit ds.l 3
- _IntuitionBase ds.l 1
- _GfxBase ds.l 1
- _DOSBase ds.l 1
- Window ds.l 1
- TEXT ds.b 2
- Font dc.l 0
- FONT dc.l fontname
- dc.w TOPAZ_EIGHTY
- dc.b FS_NORMAL
- dc.b FPF_ROMFONT
- even
- fontname dc.b "topaz.font",0
- even
- Convert move.l d0,d4 ; Zahl (d0) in ASCII (2 Zeichen)
- divu #10,d0
- move.l d0,d2
- mulu #10,d2
- add.w #"0",d0
- move.b d0,(a0)+
- sub.w d2,d4
- add.w #"0",d4
- move.b d4,(a0)+
- rts
- Jahre dc.w 365,365 ; Anzahl der Tage im Jahr (seit 1978)
- dc.w 366,365,365,365,365
- dc.w 366,365,365,365,365
- dc.w 366,365,365,365,365
- dc.w 366,365,365,365,365
- dc.w 366,365,365,365,365
- dc.w 365,365,365,365,365
- dc.w 366,365,365,365,365
- dc.w 366,365,365,365,365
- dc.w 366,365,365,365,365
- dc.w 366,365,365,365,365
- dc.w 366,365,365,365,365
- dc.w 366,365,365,365,365
- dc.w 366,365,365,365,365
- dc.w 366,365,365,365,365
- dc.w 366,365,365,365,365
- dc.w 366,365,365,365,365
- KeinSJahr dc.w 31,28,31,30,31,30,31,31,30,31,30,31 ; Anzahl der Tage im Jahr
- Schaltjahr dc.w 31,29,31,30,31,30,31,31,30,31,30,31 ; " " " " Schaltjahr
-
-
-
-
-
-
-